#ifndef MATH_ERROR_THROW_VECTOR
#define MATH_ERROR_THROW_VECTOR

#include <iostream>
#include "Throw_StructDataVector.hpp"



namespace Math
{

namespace E_Math
{

template <typename T, typename K = T>
class EXCVector : EXCStructDataVector<T,K>
    {
        public:
            ~EXCVector() { delete error_pointer; }
            EXCVector(const EXCVector<T,K>& copy) = delete;
            EXCVector() = delete;
            EXCVector(EXCVector<T,K>&& move)
              {
                  error_pointer      = move.error_pointer;
                  move.error_pointer = nullptr;
              }
            EXCVector(const Vector<T,K>* epointer)
              {
                  if(epointer == nullptr || epointer ==  NULL) error_pointer = nullptr;
                    else error_pointer = new Vector<T,K>(*epointer);
              }

            const Vector<T,K>* Geterror_pointer()   const   { return error_pointer; }


        private:
            const Vector<T,K>* error_pointer;
    };




} // end namespace E_Math
} // end namespace Math



#endif
